package binary_tree.sort.LeetCode;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Num350 {
    public int[] intersect(int[] nums1, int[] nums2) {
        Map<Integer,Integer> map=new HashMap<>();
        ArrayList<Integer> list=new ArrayList<>();
        //先将num1中的数字放入map中，key代表的是num1的元素，
        //value代表元素出现的次数
        for(int i=0;i<nums1.length;i++){
            map.put(nums1[i],map.getOrDefault(nums1[i],0)+1);
        }
        //再遍历num2，在map中查找是否有相同元素，若有相同元素则放入list中，
        //放入后需要将num2中对应元素的value值-1
        for(int i=0;i<nums2.length;i++){
            if(map.getOrDefault(nums2[i],0)>0){
                list.add(nums2[i]);
                map.put(nums2[i],map.get(nums2[i])-1);
            }
        }
        //将list集合数字化
        int[] ret=new int[list.size()];
        for(int i=0;i< ret.length;i++){
            ret[i]=list.get(i);
        }
    return ret;
    }
}
